package com.nengchuan.kbms.dfs.service;

import com.nengchuan.kbms.common.DfsTreeNode;
import com.nengchuan.kbms.common.IPageService;
import com.nengchuan.kbms.dfs.entity.dto.DataFolderDTO;
import com.nengchuan.kbms.dfs.entity.po.DataFolder;
import com.nengchuan.tree.model.NcTreeNode;
import com.sgcc.uap.rest.support.TreeNode;

import java.io.Serializable;
import java.util.List;

/**
 * <p>
 * 文件夹 服务类
 * </p>
 *
 * @author luoping
 * @since 2020-03-24
 */
public interface DataFolderService extends IPageService<DataFolder> {

    /**
     * 创建文件夹
     */
    Long saveFolder(DataFolderDTO dto);

    /**
     * 更新文件夹
     */
    boolean updateFolder(DataFolderDTO dto);

    /**
     * 删除文件夹
     */
    boolean removeFolder(Serializable id);

    /**
     * 获取简单文件夹树形结构
     */
    List<DfsTreeNode> simpleTree(Long rootId);

    /**
     * 通过文件夹id获取下级所有文件夹
     */
    List<DfsTreeNode> lazySimpleTree(Long folderId);

    /**
     * 获取层级文件夹树形结构
     */
    List<DfsTreeNode> tree(Long rootId);

    /**
     * 断言文件夹存在（不存在会抛出 NcException
     */
    DataFolder assertFolderExisted(Long folderId);


    /**
     *      查询目标文件夹
     * @param parentId    父目录id
     * @param folderName  当前文件夹名称
     * @return
     */
    DataFolder queryFolder(long parentId, String folderName);

}
